package com.syswin.lhztest.demoSwagger.model;

public class SomeArrayImpl<T> implements SomeArray<T> {
    private Object[] arr;

    public SomeArrayImpl(T... args) {
        //用反射出 实参的类型。并存入数组中
		 arr = new Object[args.length];
		 for (int i = 0; i < args.length; i++) {
            arr[i]=args[i];
        }
    }

    // 判断接口是否为空
    public boolean isEmpty() {
        if (arr.length == 0) {
            return true;
        } else {
            return false;
        }
    }
    // 获取第一个值
    public T head() {

        return (T)arr[0];
    }
    // 获取一个新的接口实例，包括除第一个值之外的其他值
    public SomeArray<T> rest() {

        if(isEmpty()){
            return  new SomeArrayImpl();
        }

        Object[] result = new Object[arr.length-1];
        for (int i = 1; i < arr.length; i++) {
            result[i - 1] = arr[i];
        }
        return new SomeArrayImpl(result);
    }
    //获取最后一个值
    public T tail() {
        if(isEmpty()){
            return  null;
        }
        return (T)arr[arr.length - 1];
    }




}